#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Módulos 
import sys, gtk, pygame, utils, objetos
from pygame.locals import *

# Constantes

# Clases
# ---------------------------------------------------------------------
        
class Linea:
	def __init__(self,texto,posx,posy):
		self.text,self.rect = utils.textotls(texto, posx,posy,16,(50,50,50))

class LineaA:
	def __init__(self,texto,posx,posy):
		self.text,self.rect = utils.textotlb(texto, posx,posy,18,(50,50,50))		

class Respuesta:
	def __init__(self,texto,posx,posy):
		self.text,self.rect = utils.textotlb(texto, posx,posy,18,(50,50,50))
		self.checked = False
		self.sonido = pygame.mixer.Sound("sounds/harp.ogg")
		self.sonido.set_volume(0.2)
		self.posx = posx
		self.posy = posy

class Enviar:
	def __init__(self,posx,posy):
		self.text,self.rect = utils.textotlb('Click para Enviar', posx,posy,26,(255,50,50))
		self.text2,self.rect2 = utils.textotlb('Encuesta Enviada', posx,posy,26,(255,50,50))
		self.posx = posx
		self.posy = posy		
		self.presionado = False


class Textbox:
	def __init__(self,posx,posy):
		self.font = pygame.font.Font("fonts/TRSL____.ttf", int(18*utils.RES))
		self.rect = pygame.Rect([0, 0, 560*utils.RES, 20*utils.RES])
		offset = (3, 3)
		self.rect.centerx = posx
		self.rect.centery = posy
		self.rect.left += offset[0]
		self.rect.top  += offset[1]
		self.message = ""
		self.selected = False
		self.puntos,self.puntos_rect = utils.texto_normal('____________________________________________________', posx-30*utils.RES,posy+10*utils.RES)
		self.maxlen = 60
		self.sonido = pygame.mixer.Sound("sounds/letra.ogg")
		
	def display(self,screen):
		screen.blit(self.puntos,self.puntos_rect)
		if len(self.message) != 0:
			#self.message = self.message.encode("iso-8859-1")
			screen.blit(self.font.render(self.message, 1, (0,0,0)), self.rect.topleft)	

# ---------------------------------------------------------------------
def dibujar(screen,cursor_picture, clock):
    salir = 0
    background_image = utils.load_image('images/fondo0_1.jpg')
    btn_adelante = objetos.BotonAdelante()
    btn_atras = objetos.BotonAtras()
    btn_enviar = Enviar(400*utils.RES,470*utils.RES)
    
    
    #titulo, titulo_rect = utils.textotls("Marcá con una V o F según sean verdaderas o falsas.", 360*utils.RES, 55*utils.RES,22,(50,50,255))
     
    texto = ( Linea('¿Recomendarías éste programa a niños y niñas de otra escuela?', 300*utils.RES,100*utils.RES),
    Linea('Elegí una opción: ', 160*utils.RES,140*utils.RES),
    Linea('¿Porqué?', 130*utils.RES,190*utils.RES),    
    LineaA('Beto y Trueno te acompañarán para investigar y mejorar todo lo que nos rodea.', 400*utils.RES,370*utils.RES),
    LineaA('Muchas Gracias', 400*utils.RES,440*utils.RES))    
    
    respuestas = (Respuesta('SI', 410*utils.RES,140*utils.RES),
    Respuesta('NO', 470*utils.RES,140*utils.RES))
    
    textboxes = (Textbox(400*utils.RES,220*utils.RES),
    Textbox(400*utils.RES,260*utils.RES),
    Textbox(400*utils.RES,300*utils.RES))
    
    
    while salir == 0:
    
    	# Pump GTK messages.sub
		while gtk.events_pending():
			gtk.main_iteration()
			
		for eventos in pygame.event.get():
			if eventos.type == QUIT:
				sys.exit(0)
			elif eventos.type == pygame.VIDEORESIZE:
			   pygame.display.set_mode(eventos.size, pygame.RESIZABLE)	
			elif eventos.type == MOUSEBUTTONDOWN:
				if btn_adelante.rect.collidepoint(pygame.mouse.get_pos()):
					salir = -1
					btn_adelante.sonido.play()	
				elif btn_atras.rect.collidepoint(pygame.mouse.get_pos()):
					salir = 3					
					btn_atras.sonido.play()
				elif btn_enviar.rect.collidepoint(pygame.mouse.get_pos()):	
					utils.guardarDato('0', '6', 'enviar', 'ok') 
					btn_enviar.presionado = True
				for respuesta in respuestas:				
					if respuesta.rect.collidepoint(pygame.mouse.get_pos()):	
						for respuesta2 in respuestas:
							respuesta2.checked = False
						respuesta.checked = True		
				for textbox in textboxes:
					if textbox.rect.collidepoint(pygame.mouse.get_pos()):
						textbox.selected = True
						textbox.sonido.play()
					else:
						textbox.selected = False						
			elif eventos.type == KEYDOWN:		
				if eventos.key == K_BACKSPACE:
					for textbox in textboxes:
						if textbox.selected == True: 
							textbox.message = textbox.message[0:-1]
				elif eventos.key == K_RETURN:
					break
				else:
					for textbox in textboxes:
						if textbox.selected == True:
							textbox.sonido.play() 
							if  len(textbox.message) <= textbox.maxlen:
								textbox.message += eventos.unicode.encode("iso-8859-1")								
		
		

		# Realiza la animacion del texto
		
		screen.blit(background_image, (0, 0))
		#screen.blit(titulo, titulo_rect)
		pygame.draw.rect(screen,(0,0,0),(80*utils.RES,70*utils.RES,630*utils.RES,330*utils.RES),1)
		for palabra in texto:
			screen.blit(palabra.text, palabra.rect)
		for respuesta in respuestas:
			screen.blit(respuesta.text, respuesta.rect)
			if respuesta.checked:
				pygame.draw.circle(screen,(255,0,0),(respuesta.posx,respuesta.posy),15,1)
		for textbox in textboxes:
				textbox.display(screen)			
		if btn_enviar.presionado:
			screen.blit(btn_enviar.text2,btn_enviar.rect2)
		else:				
			screen.blit(btn_enviar.text,btn_enviar.rect)			
		screen.blit(btn_adelante.image, btn_adelante.rect)
		screen.blit(btn_atras.image, btn_atras.rect)
		screen.blit(cursor_picture, pygame.mouse.get_pos())
		pygame.display.flip()

		# Try to stay at 30 FPS
		clock.tick(30)
                	 
    return salir

# This function is called when the game is run directly from the command line:
# ./TestGame.py 
def main():
	
	pygame.init()
	screen = pygame.display.set_mode((int(800*utils.RES), int(520*utils.RES)), pygame.RESIZABLE) #pygame.display.get_surface() #

	# Fake a Sugar cursor for the pyGame canvas area
	pygame.mouse.set_cursor((8,8),(0,0),(0,0,0,0,0,0,0,0),(0,0,0,0,0,0,0,0))
	cursor_picture = pygame.image.load('images/standardcursor.png')
	cursor_picture.convert_alpha() 
	clock = pygame.time.Clock()
	dibujar(screen,cursor_picture,clock)

if __name__ == '__main__':
   main()
